home *** CD-ROM | disk | FTP | other *** search
- //----------------------------------------------------------------------------
- // File: dplay8client.h
- //
- // Desc: see main.cpp
- //
- // Copyright (c) 1999-2001 Microsoft Corp. All rights reserved.
- //-----------------------------------------------------------------------------
- #ifndef _DPLAY8_CLIENT_H
- #define _DPLAY8_CLIENT_H
-
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc:
- //-----------------------------------------------------------------------------
- #include "NetAbstract.h"
-
- struct MazeConfig;
-
- //-----------------------------------------------------------------------------
- // Name:
- // Desc:
- //-----------------------------------------------------------------------------
- class CDPlay8Client : public IOutboundClient
- {
- public:
- CDPlay8Client();
- ~CDPlay8Client();
-
- HRESULT Init(MazeConfig* pMazeConfig);
- void Shutdown();
- HRESULT StartSessionEnum( const TCHAR* ipaddress );
- HRESULT StopSessionEnum();
- DWORD GetNumSessions() const { return m_dwNumSessions; };
- const TCHAR* GetSessionName( DWORD num ) const { return m_szSessionNames[num]; };
- DWORD GetSessionMaxPlayers( DWORD num ) const { return m_Sessions[num].dwMaxPlayers; };
- DWORD GetSessionCurrentPlayers( DWORD num ) const { return m_Sessions[num].dwCurrentPlayers; };
- GUID GetSessionGUID( DWORD num ) const { return m_Sessions[num].guidInstance; };
- HRESULT JoinSession( DWORD num );
- void SetClient( INetClient* pclient ) { m_pClient = pclient; };
- IOutboundClient* GetOutboundClient() const { return ((IOutboundClient*)this); };
-
- DWORD GetNumSPThreads();
- void SetNumSPThreads(DWORD dwNumSPThreads);
-
- DWORD GetSPBuffer();
- void SetSPBuffer(DWORD dwSPBufferSize);
-
- // IOutboundClient
- virtual HRESULT SendPacket( void* pData, DWORD dwSize, BOOL bGuaranteed, DWORD dwTimeout );
- virtual DWORD GetThroughputBPS();
- virtual DWORD GetRoundTripLatencyMS();
- virtual BOOL IsSessionLost() { return m_bSessionLost; };
- virtual DWORD GetSessionLostReason() { return m_dwSessionLostReason; };
- virtual HRESULT GetConnectionInfo( TCHAR* strConnectionInfo );
-
- protected:
- IDirectPlay8Client* m_pDPlay;
- BOOL m_bConnected;
- INetClient* m_pClient;
- BOOL m_bSessionLost;
- DWORD m_dwSessionLostReason;
- FLOAT m_fThroughputBPS;
- DWORD m_dwThroughputBytes;
-
- CRITICAL_SECTION m_csThreadCountLock;
- WORD m_wActiveThreadCount;
- WORD m_wMaxThreadCount;
- FLOAT m_fAvgThreadCount;
- FLOAT m_fAvgThreadTime;
- FLOAT m_fMaxThreadTime;
-
- // Configuration info.
- MazeConfig* m_MazeConfig;
-
- // Connection info
- FLOAT m_fLastUpdateConnectInfoTime;
- DPN_CONNECTION_INFO m_dpnConnectionInfo;
- DWORD m_dwHighPriMessages, m_dwHighPriBytes;
- DWORD m_dwNormalPriMessages, m_dwNormalPriBytes;
- DWORD m_dwLowPriMessages, m_dwLowPriBytes;
- HRESULT UpdateConnectionInfo();
-
- BOOL EnumSessionCallback( const DPN_APPLICATION_DESC *pdesc, IDirectPlay8Address* pDP8AddressHost, IDirectPlay8Address* pDP8AddressDevice );
- static HRESULT WINAPI StaticReceiveHandler( void *pvContext, DWORD dwMessageType, void *pvMessage );
- HRESULT WINAPI ReceiveHandler( void *pvContext, DWORD dwMessageType, void *pvMessage );
-
- enum {MAX_SESSIONS=256};
- enum {MAX_SESSION_NAME=64};
- DWORD m_dwNumSessions;
- DPN_APPLICATION_DESC m_Sessions[MAX_SESSIONS];
- IDirectPlay8Address* m_pHostAddresses[MAX_SESSIONS];
- IDirectPlay8Address* m_pDeviceAddresses[MAX_SESSIONS];
- TCHAR m_szSessionNames[MAX_SESSIONS][MAX_SESSION_NAME];
- FLOAT m_fSessionLastSeenTime[MAX_SESSIONS];
- CRITICAL_SECTION m_csLock;
- DPNHANDLE m_dpnhEnum;
- };
-
-
-
- #endif
-